import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.Instant;
import java.time.format.DateTimeFormatter;

public class FileTest {
    public static void main(String[] args) {
        //当前工程下路径
        File file1 = new File("ab");
        System.out.println(file1.getAbsolutePath());
    }
    @Test
    public void show1() {
        //当前模块下路径
        File file2 = new File("directoryTest");
        String[] list = file2.list();
        for (String s : list) {
            System.out.println(s);
        }

        File[] files = file2.listFiles();
        for (File f : files) {
            System.out.println(f);
        }

    }

    @Test
    public void show2() {
        File file1 = new File("directoryTest", "1.txt");
        DateTimeFormatter dt = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(file1.exists());
        System.out.println("文件名：" + file1.getName());
        System.out.println("文件长度：" + file1.length());
        System.out.println("绝对路径(文件型)：" + file1.getAbsoluteFile());
        System.out.println("绝对路径(路径)：" + file1.getAbsolutePath());
        System.out.println("父级：" + file1.getParent());

        Instant instant = Instant.ofEpochMilli(file1.lastModified());
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
        System.out.println("上次修改时间：" + localDateTime.format(dt));
    }
    @Test
    public void make() {
        //创建位置模块包下
        File file = new File("directoryTest1");
        if (file.mkdir()) {
            System.out.println("创建成功" + file.getAbsolutePath());
        } else {
            System.out.println("创建失败");
        }

        //创建多级目录,兼容性好的方法是使用/或者File.separator
        File file2 = new File("a"+ File.separator + "b");
//        File file2 = new File("a/b/c");
        if (file2.mkdirs()) {
            System.out.println("创建成功" + file2.getAbsolutePath());
        } else {
            System.out.println("创建失败");
        }
    }

    @Test
    public void create() {
        File file = new File("directoryTest/3.txt");
        try {
            if (file.createNewFile()) {
                System.out.println("创建成功" + file.getAbsolutePath());
            } else {
                System.out.println("创建失败");
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void exam() {
        File file = new File("directoryTest/2.json");
        System.out.println("是否存在：" + file.exists());
        System.out.println("是否是文件：" + file.isFile());
        System.out.println("是否是目录：" + file.isDirectory());
        System.out.println("是否可读：" + file.canRead());
        System.out.println("是否可写：" + file.canWrite());
        System.out.println("是否隐藏：" + file.isHidden());
    }

    @Test
    public void set() {
        File file = new File("directoryTest/2.json");
        //file.setWriteable(true)
        //file.setReadable(true)
        //file.setLastModified(timestamp)
        if (file.setReadOnly()) {
            System.out.println("设置成功");
        } else {
            System.out.println("设置失败");
        }

        /*
        boolean setExecutable(boolean executable, boolean ownerOnly)
        executable：
            如果为 true，则设置文件为可执行。
            如果为 false，则取消文件的可执行权限。
        ownerOnly（可选）：
            如果为 true，则仅对文件所有者设置权限。
            如果为 false，则对所有用户设置权限。
            默认值为 true（仅对文件所有者生效）。
         */
    }

}
